package me.ingxin.android.tools

import android.content.Context
import android.os.Build
import java.util.*

/**
 * 获取app版本号
 * @param context 上下文
 * @return 获取到的版本号
 */
fun getVersionCode(context: Context): Long? {
    val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        packageInfo?.longVersionCode
    } else {
        packageInfo?.versionCode?.toLong()
    }
}

/**
 * 获取app版本名
 * @param context 上下文
 * @return app版本名
 */
fun getVersionName(context: Context): String? {
    val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
    return packageInfo?.versionName
}

/**
 * 获取当前手机系统版本号
 *
 * @return 系统版本号
 */
fun getSysVersion(): String? {
    val version = Build.VERSION.RELEASE
    if (version?.isNotEmpty() != true) {
        return null
    }
    val res = version.split(Regex("\\."))
    if (res.size >= 2) {
        return res[0] + "." + res[1]
    } else if (res.isNotEmpty()) {
        return res[0]
    }
    return version
}


/**
 * 获取手机型号
 *
 * @return 手机型号
 */
fun getPhoneModel(): String? {
    return Build.MODEL?.uppercase(Locale.getDefault())
}

/**
 * 获取手机品牌
 *
 * @return 手机品牌
 */
fun getDeviceBrand(): String? {
    return Build.BRAND?.uppercase(Locale.getDefault())
}